#pragma once

#include "ScenePrecompiled.hxx"

namespace Eifersucht
{
	class SceneAnimationTake // Scene animation set
	{
	public:

		struct Layer; TinyTypeDecl(Layer);
		typedef std::vector<LayerPtr> LayerCollection; TinyTypeDecl(LayerCollection);

		REIGN_HINTINLINING void SetAt( _In_ uint32 index, _In_ LayerPtr layer ) { m_vnLayers[index] = layer; }
		REIGN_HINTINLINING LayerPtr GetAt( _In_ uint32 index ) { return m_vnLayers[index]; }
		REIGN_HINTINLINING void Push( _In_ LayerPtr layer ) { return m_vnLayers.push_back(layer); }
		REIGN_HINTINLINING uint32 Size() { return _To_uint m_vnLayers.size(); }
		REIGN_HINTINLINING LayerCollectionPtr Raw() { return &m_vnLayers; }

		REIGN_HINTINLINING LayerAddress GetAllFrom( _In_ uint32 index ) { return &m_vnLayers[index]; }
		REIGN_HINTINLINING LayerAddress GetAll() { return m_vnLayers.data(); }


		SceneAnimationTake();
		~SceneAnimationTake();

	private:

		LayerCollection m_vnLayers;

	};

	typedef SceneAnimationTake::Layer SceneAnimationLayer; 
	TinyTypeDecl(SceneAnimationLayer);
};